#!/bin/bash

# 检查是否提供了至少一个参数
if [ $# -lt 1 ]; then
    echo "用法: $0 <分支A>"
    exit 1
fi

# 获取参数
branch_A=$1

# 遍历当前目录下的所有子目录
for dir in */; do
    # 进入子目录
    cd "$dir" || continue

    # 检查该目录是否是一个Git仓库
    if [ -d ".git" ]; then
        echo "正在处理Git仓库: $dir"

        # 获取当前分支名称作为分支B
        branch_B=$(git symbolic-ref --short -q HEAD)
        if [ $? -ne 0 ]; then
            echo "无法获取当前分支: $dir"
            cd ..
            continue
        fi
        echo "当前分支为: $branch_B"

        # 获取并更新分支A
        git fetch origin "$branch_A"
        if [ $? -ne 0 ]; then
            echo "获取分支 $branch_A 失败: $dir"
            cd ..
            continue
        fi

        # 获取并更新当前分支B
        git fetch origin "$branch_B"
        if [ $? -ne 0 ]; then
            echo "获取分支 $branch_B 失败: $dir"
            cd ..
            continue
        fi

        # 切换到分支A
        git checkout "$branch_A"
        if [ $? -ne 0 ]; then
            echo "切换到分支 $branch_A 失败: $dir"
            cd ..
            continue
        fi

        # 合并当前分支B到分支A
        git merge "$branch_B"
        if [ $? -ne 0 ]; then
            echo "合并分支 $branch_B 到 $branch_A 失败: $dir"
        else
            echo "成功将分支 $branch_B 合并到 $branch_A: $dir"
        fi

        # 切换回原分支B
        git checkout "$branch_B"
        if [ $? -ne 0 ]; then
            echo "切换回分支 $branch_B 失败: $dir"
        else
            echo "成功切换回分支 $branch_B: $dir"
        fi
    else
        echo "$dir 不是一个 Git 仓库"
    fi

    # 返回上一级目录
    cd ..
done

echo "处理完成！"